#ifndef EFFETBOIS_H
#define EFFETBOIS_H

#include "EffetBase.hpp"

/**
 * Classe permettant de créer un effet visuel de type bois. C'est une
 * texture procédurale qui se base sur un bruit de Perlin.
 *
 * La détermination de la couleur sur la formule suivante :
 *
 * \f{align*}{ \mathcal{B} & = M \, \operatorname{bruit} \left( x, y,
 * z \right) \\ c & = \mathcal{B} - \lfloor \mathcal{B} \rfloor \f}
 *
 * @author Johan "Solo" Luisier
 *
 * @date 2010
 */
class EffetBois : public EffetBase
{
 public:
  EffetBois(const double& refl = 0., const double& trans = 0.,
	    const double& indice = 1., const double& reg = 0.,
	    const std::vector< Couleur >& couleurs =
	    boost::assign::list_of( Couleur( 0, 0, 0 ) )
	    ( Couleur( 255, 255, 255 ) ),
	    const double& coeff = 1., const double& mult = 20.);
  EffetBois(const double& refl, const double& trans, const double& indice,
	    const double& reg, const double& bruit,
	    const std::vector< Couleur >& couleurs,
	    const double& coeff, const double& mult );
  ~EffetBois();
  Couleur couleur(const Coord&);
  double valeurBruit(const Coord& pt) const;
 protected:
  /**
   * Nombre utilisé pour la génération du motif.
   */
  double Multiplicateur;
};

#endif // EFFETBOIS_H
